from volcenginesdkarkruntime import Ark

client = Ark(
    api_key="780242c1-b80a-43d1-b5a1-fcc5bea20248",
    base_url="https://ark.cn-beijing.volces.com/api/v3"
)


def generate_vue_component(prompt):
    response = client.chat.completions.create(
        model="deepseek-r1-250120",
        messages=[
            {"role": "system", "content": """你是一个全栈的架构师"""},
            {"role": "user", "content": prompt}
        ],
        stream=True
    )

    full_content = []
    for chunk in response:
        if chunk.choices:
            content = chunk.choices[0].delta.content
            if content:
                full_content.append(content)

    return "".join(full_content)
prompt="""
import request from '@/utils/request'

function convertAngularMenuToRuoYi(angularMenu) {
  const resultRoutes = [];

  function processMenu(menu, parentPath = '') {
    if (menu.enableMenu !== 1) return null;

    // 处理路径和组件
    const currentPath = menu.menuUrl ? menu.menuUrl : '';
    // const fullPath = parentPath ? `${parentPath}/${currentPath}` : `/${currentPath}`;
    // console.log('currentPath=', currentPath);

    // 转换组件路径
    let componentPath = '';
    if (menu.templateUrl) {
      componentPath = menu.templateUrl
        .replace('.html', '')
        .replace(/^bms\\/views\\//, ''); // 移除bms/views前缀
    }
    // console.log('componentPath=', componentPath);

    // 解析load字段
    let fileJs = [];
    try {
      if (menu.load) {
        const loadConfig = JSON.parse(menu.load
          .replace(/\\s+/g, '') // 去掉所有空白字符（包括换行符和空格）
          .replace(/'/g, '"') // 替换单引号为双引号
          .replace(/(\\w+):/g, '"$1":') // 修复键的格式
          .replace(/,+/g, ',') // 将多个逗号替换为单个逗号
          .replace(/,(\\s*[}\\]])/g, '$1')); // 去掉多余的逗号
        loadConfig.forEach(item => {
          if (item.name && item.files) {
            fileJs = fileJs.concat(item.files
              .filter(f => {
                const lowerCaseFile = f.toLowerCase(); // 将文件名转换为小写
                return (
                  f.endsWith('.js') && // 确保是 .js 文件
                  (lowerCaseFile.includes('controller') || lowerCaseFile.includes('ctrl')) // 不区分大小写匹配
                );
              }));
              // .map(f => f.replace(/bms\\//g, ''))); // 将 bms/ 替换为空字符串
          }
        });
      }
      console.log('-------filejs--------', fileJs)
    } catch (e) {
      console.warn('解析load字段失败:', menu.load, e);
    }

    // 构建路由对象
    const route = {
      path: currentPath,
      component: componentPath || 'Layout',
      name: convertAliasToName(menu.alias), // 确保name是字符串
      meta: {
        title: menu.name,
        icon: menu.menuIcon || 'el-icon-menu',
        htmlUrl: menu.templateUrl || '',
        ...(fileJs.length > 0 && { fileJs }) // 仅当有js文件时添加
      }
    };
    // console.log('route1=', route);
    // 处理子菜单
    if (menu.children && menu.children.length > 0) {
      route.children = [];
      menu.children.forEach(child => {
        const childRoute = processMenu(child);
        // console.log('---------start--------');
        // console.log('childRoute.component=', childRoute);
        // // console.log('fullPath=', currentPath);
        // console.log('---------end--------');
        if (childRoute) {

          // 修正叶子节点的路径结构
          if (childRoute.component !== 'Layout') {
            route.children.push({
              ...childRoute,
              component: childRoute.component
            });
          } else {
            route.children.push(childRoute);
          }
        }
      });

      // 如果没有有效子路由，则不保留空children
      if (route.children.length === 0) {
        delete route.children;
      }
      // console.log('route----------------------------------------------------=', route);
    }
    // 修正Layout组件的路径结构
    if (route.component === 'Layout' && route.children) {
      route.path = route.path.replace(/\\/$/, ''); // 移除末尾斜杠
      return route;
    }
    // console.log('route3=', route);
    return route.component ? route : null;
  }
  function convertAliasToName(alias) {
    if (!alias) return ''; // 如果alias为空，返回空字符串

    // 如果alias包含.，则按照原来的逻辑处理
    if (alias.includes('.')) {
      return alias.split('.')
        .slice(1) // 去掉system前缀
        .map(part => part
          .split('_')
          .map((word, i) => i === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1))
          .join('')
          .replace(/_/g, ''))
        .join(''); // 将数组拼接为字符串
    }

    // 如果alias不包含.，则直接去掉下划线或转换为驼峰命名
    return alias
      .split('_')
      .map((word, i) => i === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1))
      .join('')
      .replace(/_/g, '');
  }
  // 开始处理顶级菜单
  angularMenu.forEach(topMenu => { // 直接遍历angularMenu
    const converted = processMenu(topMenu);
    if (converted) {
      resultRoutes.push(converted);
    }
  });

  return resultRoutes;
}

// 获取路由
  export const getRouters = () => {
    return new Promise((resolve, reject) => {
      request({
        url: '/portal/sys/sysMenu/v1/getCurrentUserMenu?menuAlias=system.front_menu',
        method: 'get'
      }).then(response => {
        console.log('-------GetCurrentUserMenu origin-------------', response)
        if (response.state) {
          const resData = response.value
          if (resData.length > 0) {
            const ruoyiRoutes = convertAngularMenuToRuoYi(resData)
            console.log('-------GetCurrentUserMenu target---------', JSON.parse(JSON.stringify(ruoyiRoutes)))
            resolve({
              data: ruoyiRoutes
            })
          } else {
            resolve({
              data: []
            })
          }
        }
      }).catch(error => {
        console.error('请求失败:', error)
        reject(error) // 如果请求异常，抛出错误
      })
    })
  }
帮我把上面代码转换成python执行，并写入到data.json文件中，如果有则替换，否则新建
"""
code = generate_vue_component(prompt)
print("结果：\n")
print(code)
# ，并且templateUrl地址，对应的是当前目录下的html的地址，我们按照这个一级菜单和二级菜单新建文件夹和文件，文件夹名称就是alias中的值，如："alias": "system.resource_Engineering",那么文件夹名就是：resourceEngineering，文件名称就是这个文件名，如：'a/b/c.html'，那么组件就是c.vue，path='system/resourceEngineering'注意，我们在/Users/justinzhang/WorkSpace/com.ein/demo/angularjs2vue3/RuoYi-Vue/ruoyi-ui/src/views中新建文件夹和文件，
